﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
using DomainDriver.DomainModeling.GenericUnitTesting;
using AutomotivePricingModel.ValueObjects.YearlyFinancialAssessments;

namespace AutomotivePricingModel.ValueObjects.UnitTests.YearlyFinancialAssessments
{
    [TestFixture]
    public class YearlyFinancialAssessmentObjectTests : DomainObjectTestFixture<Guid, YearlyFinancialAssessment>
    {
        [Test]
        public override void VerifyDomainObjectFunctionality()
        {
            base.VerifyDomainObjectFunctionality();
        }

        protected override YearlyFinancialAssessment CreateUniqueDomainObject()
        {
            YearlyFinancialAssessment domainObject = new YearlyFinancialAssessment();
            return domainObject;
        }

        public YearlyFinancialAssessment CreateDomainObjectInstance()
        { return CreateUniqueDomainObject(); }

        protected override ICollection<DomainObjectModifier<Guid, YearlyFinancialAssessment>> GetDomainObjectModifiers()
        {
            List<DomainObjectModifier<Guid, YearlyFinancialAssessment>> modifiers = new List<DomainObjectModifier<Guid, YearlyFinancialAssessment>>();

            modifiers.Add(delegate(YearlyFinancialAssessment obj)
            {
                obj.SetValue(2010, 10.10);
            });

            modifiers.Add(delegate(YearlyFinancialAssessment obj)
            {
                obj.SetValue(2015, 15.15);
            });

            modifiers.Add(delegate(YearlyFinancialAssessment obj)
            {
                obj.SetValue(2005, 5.5);
            });

            modifiers.Add(delegate(YearlyFinancialAssessment obj)
            {
                obj.SetValue(2010, 100);
            });

            modifiers.Add(delegate(YearlyFinancialAssessment obj)
            {
                obj.RemoveValue(2010);
            });

            modifiers.Add(delegate(YearlyFinancialAssessment obj)
            {
                obj.RemoveValue(2015);
            });

            modifiers.Add(delegate(YearlyFinancialAssessment obj)
            {
                obj.RemoveValue(2005);
            });

            return modifiers;
        }
    }
}